package com.javasm.controller.goods;


import com.javasm.common.http.AxiosResult;
import com.javasm.common.page.PageResult;
import com.javasm.common.valid.addGroup;
import com.javasm.controller.base.BaseController;
import com.javasm.domin.criteria.goods.BaseBrandCriteria;
import com.javasm.domin.criteria.goods.BaseTypeCriteria;
import com.javasm.domin.entity.goods.BaseBrand;
import com.javasm.domin.entity.goods.BaseType;
import com.javasm.service.goods.IBaseTypeService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author whl
 * @since 2022-01-16
 */
@RestController
@RequestMapping("base-type")
@RequiredArgsConstructor
public class BaseTypeController extends BaseController {


    private final IBaseTypeService iBaseTypeService;

    @GetMapping("findAllType")
    public AxiosResult<List<BaseType>> findAllType() {

        List<BaseType> list = iBaseTypeService.list();
        return AxiosResult.success(list);
    }

    /**
     * 分页条件查询
     */
    @GetMapping("findAllPageByPage")
    public AxiosResult<PageResult<BaseType>> list(BaseTypeCriteria baseTypeCriteria ) {
        PageResult<BaseType> list = iBaseTypeService.searchPage(baseTypeCriteria);
        return AxiosResult.success(list);
    }



    /**
     * 添加
     */
    @PostMapping
    public AxiosResult<Void> add(@Validated(addGroup.class) @RequestBody BaseType baseType ) {

        return toAxios(iBaseTypeService.save(baseType));
    }



//    /**
//     * 根据id查询
//     */
//    @GetMapping("{id}")
//    public AxiosResult<BaseType> findById(@PathVariable Long id) {
//         iBaseTypeService.getById(id);
//
//        return AxiosResult.success(byId);
//    }


    /**
     * 修改
     */
    @PutMapping
    public AxiosResult<Void> update(@RequestBody BaseType baseType) {
        return toAxios(iBaseTypeService.update(baseType));
    }

    /**
     * 删除
     */
    @DeleteMapping("{id}")
    public AxiosResult<Void> delete(@PathVariable Long id) {
        return toAxios(iBaseTypeService.deleteById(id));
    }


    /**
     * 批量删除
     */
    @DeleteMapping("batch/{ids}")
    public AxiosResult<Void> batch(@PathVariable List<Long> ids) {
        return toAxios(iBaseTypeService.batchDeleteByIds(ids));
    }
}
